﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ext.Net;
using crm.model;
using System.Data;

namespace crm.aplicacao.CRMSystem
{
    public partial class GContatos : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                carregarContatos();
                carregarEmpresas();
                carregarPais();
                carregarEstado();
                carregarCidade();
            }
        }

        [DirectMethod]
        public void inserir()
        {
            if (txtNomeContatos.Text == "" || cboEmpresaContatos.SelectedItem.Value == "" || cboPaisContatos.SelectedItem.Value == "" || cboEstadoContatos.SelectedItem.Value == "" ||
                 cboCidadeContatos.SelectedItem.Value == "" || txtCargoContatos.Text == "")
                X.Msg.Alert("Status", "Os campos deverão ser preenchidos!").Show();
            else
            {
                Contatos obj = new Contatos();
                obj.Nome = txtNomeContatos.Text;
                obj.Email = txtEmailContatos.Text;
                obj.Telefone = txtTelefoneContatos.Text;
                obj.Celular = txtCelularContatos.Text;
                obj.FkIdEmpresas = Convert.ToInt32(cboEmpresaContatos.SelectedItem.Value);
                obj.FkIdPais = Convert.ToInt32(cboPaisContatos.SelectedItem.Value);
                obj.FkIdEstado = Convert.ToInt32(cboEstadoContatos.SelectedItem.Value);
                obj.FkIdCidade = Convert.ToInt32(cboCidadeContatos.SelectedItem.Value);
                obj.Cargo = txtCargoContatos.Text;
                obj.Observacao = txtObservacaoContatos.Text;

                ContatosDao objDao = new ContatosDao();

                var objValida = objDao.consultar(txtEmailContatos.Text);

                if (hdfIdContatos.Value.Equals(""))
                    if (objValida.Rows.Count > 0)
                        X.Msg.Alert("Status", "Este item já está cadastrado!").Show();
                    else
                        if (objDao.inserir(obj))
                            X.Msg.Alert("Status", "Inserido com sucesso!").Show();
                        else
                            X.Msg.Alert("Status", "Não foi possível inserir!").Show();
                else
                {
                    var id = Convert.ToInt32(hdfIdContatos.Value);

                    hdfIdContatos.Clear();

                    obj = new Contatos() { IdContatos = id };

                    hdfIdContatos.Value = id.ToString();
                    obj.Nome = txtNomeContatos.Text;
                    obj.Email = txtEmailContatos.Text;
                    obj.Telefone = txtTelefoneContatos.Text;
                    obj.Celular = txtCelularContatos.Text;
                    obj.FkIdEmpresas = Convert.ToInt32(cboEmpresaContatos.SelectedItem.Value);
                    obj.FkIdPais = Convert.ToInt32(cboPaisContatos.SelectedItem.Value);
                    obj.FkIdEstado = Convert.ToInt32(cboEstadoContatos.SelectedItem.Value);
                    obj.FkIdCidade = Convert.ToInt32(cboCidadeContatos.SelectedItem.Value);
                    obj.Cargo = txtCargoContatos.Text;
                    obj.Observacao = txtObservacaoContatos.Text;

                    if (new ContatosDao().atualizar(obj))
                        X.Msg.Alert("Status", "Atualizado com sucesso!").Show();
                    else
                        X.Msg.Alert("Status", "Não foi possível atualizar!").Show();
                }

                WindowsNovoContatos.Hide();
                carregarContatos();
            }
        }

        [DirectMethod]
        public void reload()
        {
            cboCidadeContatos.Text = "";
            var id = Convert.ToInt32(cboEstadoContatos.SelectedItem.Value);
            carregarCboCidades(id);
        }

        [DirectMethod]
        public void editar()
        {
            RowSelectionModel sm = GridContatos.SelectionModel.Primary as RowSelectionModel;

            if (sm.SelectedRow == null)
            {
                X.Msg.Alert("Status", "Selecione um item").Show();
                return;
            }

            var id = Convert.ToInt32(sm.SelectedRow.RecordID);

            var dt = new ContatosDao().consultar(id);

            List<Contatos> lst = new List<Contatos>();

            foreach (DataRow dr in dt.Rows)
            {
                lst.Add(new Contatos()
                {
                    IdContatos = (int)dr["idcontatos"],
                    Nome = (string)dr["nome"],
                    Email = (string)dr["email"],
                    Telefone = (string)dr["telefone"],
                    Celular = (string)dr["celular"],
                    FkIdEmpresas = (int)dr["fkidempresas"],
                    FkIdPais = (int)dr["fkidpais"],
                    FkIdEstado = (int)dr["fkidestado"],
                    FkIdCidade = (int)dr["fkidcidade"],
                    Cargo = (string)dr["cargo"],
                    Observacao = (string)dr["observacao"]
                });
            }

            if (lst.Count == 0)
                return;

            var obj = lst[0];

            hdfIdContatos.Value = id.ToString();
            txtNomeContatos.Text = obj.Nome;
            txtEmailContatos.Text = obj.Email;
            txtTelefoneContatos.Text = obj.Telefone;
            txtCelularContatos.Text = obj.Celular;
            cboEmpresaContatos.SelectedItem.Value = obj.FkIdEmpresas.ToString();
            cboPaisContatos.SelectedItem.Value = obj.FkIdPais.ToString();
            cboEstadoContatos.SelectedItem.Value = obj.FkIdEstado.ToString();
            cboCidadeContatos.SelectedItem.Value = obj.FkIdCidade.ToString();
            txtCargoContatos.Text = obj.Cargo;
            txtObservacaoContatos.Text = obj.Observacao;

            WindowsNovoContatos.Show();
        }

        [DirectMethod]
        public void remover()
        {
            RowSelectionModel sm = GridContatos.SelectionModel.Primary as RowSelectionModel;

            if (sm.SelectedRow == null)
            {
                X.Msg.Alert("Status", "Selecione um item").Show();
                return;
            }

            var id = Convert.ToInt32(sm.SelectedRow.RecordID);

            new ContatosDao().remover(id);

            if (id > 0)
                X.Msg.Alert("Status", "Removido com sucesso!").Show();
            else
                X.Msg.Alert("Status", "Não foi possível remover!").Show();

            carregarContatos();

        }
    

          void carregarCboCidades(int id)
        {
            CidadeDao objDao = new CidadeDao();
            var dados = objDao.carregarCboCidades(id);
            this.strCidade.DataSource = dados;
            this.strCidade.DataBind();
        }

        void carregarContatos()
        {
            ContatosDao objDao = new ContatosDao();
            var dados = objDao.consultar();
            this.strContatos.DataSource = dados;
            this.strContatos.DataBind();
        }

        void carregarEmpresas()
        {
            EmpresasDao objDao = new EmpresasDao();
            var dados = objDao.consultar();
            this.strEmpresas.DataSource = dados;
            this.strEmpresas.DataBind();
        }

        void carregarPais()
        {
            PaisDao objDao = new PaisDao();
            var dados = objDao.consultar();
            this.strPais.DataSource = dados;
            this.strPais.DataBind();
        }

        void carregarEstado()
        {
            EstadoDao objDao = new EstadoDao();
            var dados = objDao.consultar();
            this.strEstado.DataSource = dados;
            this.strEstado.DataBind();
        }

        void carregarCidade()
        {
            CidadeDao objDao = new CidadeDao();
            var dados = objDao.consultar();
            this.strCidade.DataSource = dados;
            this.strCidade.DataBind();
        }
        [DirectMethod]
        public void limparCampo()
        {
            this.txtNomeContatos.Text = "";
            this.txtEmailContatos.Text = "";
            this.txtTelefoneContatos.Text = "";
            this.cboEmpresaContatos.Text = "";
            this.cboPaisContatos.Text = "";
            this.cboEstadoContatos.Text = "";
            this.cboCidadeContatos.Text = "";
            this.txtCargoContatos.Text = "";
            this.txtObservacaoContatos.Text = "";
        }
    }
}